有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java ParseServer:不保存用户信息?

基本上,如果用户位于某个事件附近,我想将名为“pending”的属性更新为“yes”。我使用for循环遍历所有用户(此代码仅用于演示目的,没有那么多用户),并检查他们到指定事件的距离。如果是<;=7000,然后我想将“待定”更新为“是”但是,没有一个属性实际正在保存

我已经附上了我的全部代码,但是相关的代码片段出现在这条评论之后://****为居住在附近的用户提供通知***********

我知道的事情:

  • 我放置的第一条log语句“numUsers”返回查询中有多少用户,以便我验证是否所有用户都被实际查询。它返回7,这是真的!这样就行了

  • 在for循环中,它在每次迭代中成功地打印每个用户的用户名,因此我知道它在正确地迭代用户

  • 最后,在u.SaveInBackground(…)它成功地打印出每个用户名,如果他们在我指定的距离内,则打印“是”,否则打印“空”

但是当我检查服务器时,这些信息实际上都没有存储? 在这个方法之外,如果我尝试获取任何用户的“pending”属性,它会告诉我它是null

我已经被困在这几个小时了

public void onButtonClickDecision(final View view) {

    ParseQuery<ParseObject> query = ParseQuery.getQuery("IncidentReports");
    query.whereEqualTo("reference", intent.getStringExtra("reference"));
    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(final List<ParseObject> objects, ParseException e) {
            if (e == null) {
                if (objects.size()>0) {

                    //if we clicked, decline -> update status to decline
                    if (view.getId() == R.id.decline) {
                        objects.get(0).put("status", "declined");
                    }
                    // if we clicked approve -> update status to approve
                    else if (view.getId() == R.id.approve) {
                        // update status
                        objects.get(0).put("status", "approved");


                        // ****** NOTIFICATIONS FOR USERS WHO LIVE IN THE NEIGHBOURHOOD ***********
                        ParseQuery<ParseUser> query3 = ParseUser.getQuery();
                        query3.findInBackground(new FindCallback<ParseUser>() {
                            @Override
                            public void done(List<ParseUser> users, ParseException e) {

                                Log.i("numUsers", Integer.toString(users.size()));

                                if ( e== null && users.size()>0) {

                                    // COMPARE EACH USERS ADDRESS
                                    for (final ParseUser u : users) {

                                        Log.i("user name", u.getUsername());
                                        String address = u.getString("address");

                                        try {
                                            // sets up users home as a Location
                                            List<Address> list = geocoder.getFromLocationName(address, 1);
                                            Address add = list.get(0);

                                            Location home = new Location(LocationManager.GPS_PROVIDER);
                                            home.setLatitude(add.getLatitude());
                                            home.setLongitude(add.getLongitude());

                                            // check if user is located in incident neighbourhood
                                            if (home.distanceTo(incidentLoc) <= 7000) {
                                                u.put("pending", "yes");
                                            }


                                        } catch (IOException ex) {
                                            Log.i("ApprovedCheckingUsers", "failed");
                                            System.out.println(ex.getMessage());
                                        }

                                        u.saveInBackground(new SaveCallback() {
                                            @Override
                                            public void done(ParseException e) {
                                                Log.i("Updated:", u.getUsername() + "," + u.getString("pending"));
                                            }
                                        });
                                    }

                                }
                            }
                        });
                    }

                    // NOTIFY USER WHO POSTED
                    objects.get(0).put("notified", "false");

                    objects.get(0).put("reviewedby", ParseUser.getCurrentUser().getString("username"));
                    objects.get(0).saveInBackground(new SaveCallback() {
                        @Override
                        public void done(ParseException e) {
                            if (e == null) {
                                System.out.println("Saving status updates");
                                currentStatus.setText(objects.get(0).getString("status"));
                                Toast.makeText(ViewIndividualReport.this, "Status successfuly changed", Toast.LENGTH_SHORT).show();
                            } else {
                                System.out.println("Failed to save");
                                Toast.makeText(ViewIndividualReport.this, "Could not update status at this time. Try again later.", Toast.LENGTH_SHORT).show();
                            }
                        }
                    });

                }

            }
        }
    });
}

共 (0) 个答案